field_2023_provisional <- read_csv("field_data/2023_WLE_Weekly_Datashare_CSV.csv") %>%
mutate(across(where(is.character), ~ replace(., . %in% c("nd", "ns", "N/A", "NS", "ND"), NA)),
across(where(is.character), ~ if_else(str_detect(., "<|>|=|\\*"), str_remove(., "<|>|=|\\*"), .)),
across(where(is.character), ~ if_else(str_detect(., "bdl|BDL"), "0", .))) %>%
type_convert() %>%
mutate(Arrival_Time = hms::parse_hm(Arrival_Time),
Departure_Time = hms::parse_hm(Departure_Time))
## Rows: 238 Columns: 26
## ── Column specification ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
## Delimiter: ","
## chr (19): Date, Site, Sample_Depth_category, Arrival_Time, Departure_Time, S...
## dbl (6): Station_Depth_m, Sample_Depth_m, Lat_deg, Long_deg, Wind_speed_kno...
## lgl (1): Wave_Ht_ft
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
##
## ── Column specification ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
## cols(
## Date = col_character(),
## Site = col_character(),
## Sample_Depth_category = col_character(),
## Arrival_Time = col_character(),
## Departure_Time = col_character(),
## Sky = col_character(),
## Secchi_Depth_m = col_double(),
## Temp_C = col_double(),
## `SpCond_uScm-1` = col_double(),
## `BeamAtten_m-1` = col_double(),
## Transmiss_pct = col_double(),
## `DO_mgL-1` = col_double(),
## `PAR_uEcm-2s-1` = col_double(),
## Turbidity_NTU = col_double(),
## `Particulate_Microcystin_ugL-1` = col_double(),
## `Dissolved_Microcystin_ugL-1` = col_double(),
## `Extracted_PC_ugL-1` = col_double(),
## `Total_cyanobacteria_genes_copiesmL-1` = col_double(),
## `mycE_genes_copiesmL-1` = col_double()
## )
field_2024_provisional <- read_csv("field_data/2024_WLE_Weekly_Datashare_CSV.csv") %>%
mutate(across(where(is.character), ~ replace(., . %in% c("nd", "ns", "N/A", "NS", "ND"), NA)),
across(where(is.character), ~ if_else(str_detect(., "<|>|=|\\*"), str_remove(., "<|>|=|\\*"), .)),
across(where(is.character), ~ if_else(str_detect(., "bdl|BDL"), "0", .))) %>%
type_convert()
## Rows: 260 Columns: 25
## ── Column specification ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
## Delimiter: ","
## chr (17): Date, Site, Sample_Depth_category, Sky, Secchi_Depth_m, Temp_C, S...
## dbl (6): Station_Depth_m, Sample_Depth_m, Lat_deg, Long_deg, Wind_speed_ms...
## time (2): Arrival_Time, Departure_Time
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
##
## ── Column specification ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
## cols(
## Date = col_character(),
## Site = col_character(),
## Sample_Depth_category = col_character(),
## Sky = col_character(),
## Secchi_Depth_m = col_double(),
## Temp_C = col_double(),
## `SpCond_uScm-1` = col_double(),
## `BeamAtten_m-1` = col_double(),
## Transmiss_pct = col_double(),
## `DO_mgL-1` = col_double(),
## `PAR_uEcm-2s-1` = col_double(),
## Turbidity_NTU = col_double(),
## `Particulate_Microcystin_ugL-1` = col_double(),
## `Dissolved_Microcystin_ugL-1` = col_double(),
## `Extracted_PC_ugL-1` = col_double(),
## `Total_cyanobacteria_genes_copiesmL-1` = col_double(),
## `mycE_genes_copiesmL-1` = col_double()
## )
field_2025_provisional <- read_csv("field_data/2025_WLE_Weekly_Datashare_CSV.csv") %>%
mutate(across(where(is.character), ~ replace(., . %in% c("nd", "ns", "N/A", "NS", "ND"), NA)),
across(where(is.character), ~ if_else(str_detect(., "<|>|=|\\*"), str_remove(., "<|>|=|\\*"), .)),
across(where(is.character), ~ if_else(str_detect(., "bdl|BDL"), "0", .))) %>%
type_convert() %>%
mutate(Departure_Time = hms::parse_hm(Departure_Time))
## Rows: 84 Columns: 27
## ── Column specification ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
## Delimiter: ","
## chr (12): Date, Site, Sample_Depth_category, Departure_Time, Sky, Secchi_De...
## dbl (14): Station_Depth_m, Sample_Depth_m, Lat_deg, Long_deg, Wind_speed_ms...
## time (1): Arrival_Time
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
##
## ── Column specification ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
## cols(
## Date = col_character(),
## Site = col_character(),
## Sample_Depth_category = col_character(),
## Departure_Time = col_time(format = ""),
## Sky = col_character(),
## Secchi_Depth_m = col_double(),
## `Particulate_Microcystin_ugL-1` = col_double(),
## `Dissolved_Microcystin_ugL-1` = col_double(),
## `Total_cyanobacteria_genes_copiesmL-1` = col_double(),
## `mycE_genes_copiesmL-1` = col_double(),
## `DIC (uM)` = col_double(),
## TALK = col_double()
## )
combined_field_data <- bind_rows(field_2023_provisional,field_2024_provisional,field_2025_provisional) %>%
mutate(Date = lubridate::mdy(Date),
date_same_year = lubridate::`year<-`(Date, 2000),
year = lubridate::year(Date)) %>%
rename(date = "Date",
NOAA_Site = "Site",
part_microcyst = "Particulate_Microcystin_ugL-1",
ext_phyco = "Extracted_PC_ugL-1",
chlorophyl = "Extracted_CHLa_ugL-1") %>%
filter(NOAA_Site %in% c("WE4","WE9","WE2","WE12"))
Key bloom parameters (chlorophyll, phycocyanin, and particulate microcystin) from the complete weekly monitoring dataset are shown to approximate bloom characteristics for each year.
In this case, the parameter values were scaled across all years to obtain values on a similar scale for each parameter and highlight differences between bloom years. The y-axis position of sample points corresponds to Microcystis abundance in the metagenomes.
Key bloom parameters (chlorophyll, phycocyanin, and particulate microcystin) from the complete weekly monitoring dataset are shown to approximate bloom characteristics for each year.
In this case, the parameter values were scaled within years to obtain values on a similar scale and highlight differences throughout each bloom. The y-axis position of sample points corresponds to Microcystis abundance in the metagenomes.